home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Grab Bag
/
Shareware Grab Bag.iso
/
007
/
tags.arc
/
TAG.M
< prev
next >
Wrap
Text File
|
1987-04-13
|
2KB
|
101 lines
;*********************************
;** tag.m goto macro or
;** function based on
;** supplied tag.
;**
(macro tag
(
(string
tag_name
pattern
file
extension
f_pat
)
(int
old_buf
new_buf
)
(= old_buf (inq_buffer))
(if (&& (!= (get_parm 0 tag_name "tag: ") 0)(!= tag_name ""))
(
(sprintf pattern "<%s[\\t]" tag_name)
(= new_buf (create_buffer "Tags" "tags" 1))
(set_buffer new_buf)
(top_of_buffer)
(if (> (search_fwd pattern) 0)
(
(beginning_of_line)
(get_token) ;** skip tag name
(= file (get_token))
(= pattern (get_token))
(= f_pat (substr pattern 1 1))
(set_buffer old_buf)
(delete_buffer new_buf)
(edit_file file)
(inq_names NULL extension NULL)
(set_msg_level 3)
(execute_macro (+ "." extension))
(set_msg_level 0)
(top_of_buffer)
(if (isdigit f_pat)
(
(move_abs (atoi pattern) 1)
)
;else
(
(search_fwd pattern)
))
)
;else
(
(message "%s not in tags file" tag_name)
(set_buffer old_buf)
(delete_buffer new_buf)
))
)
;else
(
(message "")
))
))
(macro isdigit
(
(string chr)
(if (get_parm 0 chr)
(
(if (&& (>= chr "0")(<= chr "9"))
(
(returns 1)
)
;else
(
(returns 0)
))
)
;else
(
(returns 0)
))
))
(macro get_token
(
(string
token
char
)
(= token "")
(while (== (index "\t\n" (= char (read 1))) 0)
(
(+= token char)
(next_char)
))
(returns token)
(next_char)
))